package com.dragon.modules.yuegou.query.coupon;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dragon.modules.yuegou.entity.coupon.CouponEntity;
import com.dragon.modules.yuegou.enums.OwnerType;
import com.dragon.modules.yuegou.enums.coupon.CouponPlatform;
import com.dragon.modules.yuegou.enums.coupon.CouponSourceType;
import com.dragon.modules.yuegou.enums.coupon.CouponType;
import com.dragon.modules.yuegou.mybatis.Condition;
import com.dragon.modules.yuegou.mybatis.Query;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonUnwrapped;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 优惠券（会员的优惠券，不冗余优惠券模板信息，请使用1+N模式查询） 动态查询条件
 * 
 * @author pbuilder generated
 * @date 2020-07-17 20:19:55
 * @version 2.0
 */
@JsonInclude(Include.NON_NULL)
public class CouponQuery extends CouponEntity implements Query<CouponEntity> {

    /** 优惠券ID查询条件 */
	@JsonUnwrapped(prefix = "id")
	private Condition<String> idCondition;

    /** [全局枚举]所有者类型(把优惠券交给会员之前的所有者)：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSINESS_DISTRICT、3-商户-MERCHANT查询条件 */
	@JsonUnwrapped(prefix = "ownerType")
	private Condition<OwnerType> ownerTypeCondition;

    /** 集团ID查询条件 */
	@JsonUnwrapped(prefix = "groupId")
	private Condition<String> groupIdCondition;

    /** 商圈ID查询条件 */
	@JsonUnwrapped(prefix = "busdId")
	private Condition<String> busdIdCondition;

    /** 商户ID查询条件 */
	@JsonUnwrapped(prefix = "merchantId")
	private Condition<String> merchantIdCondition;

    /** 会员ID查询条件 */
	@JsonUnwrapped(prefix = "memberId")
	private Condition<String> memberIdCondition;

    /** 优惠券名称查询条件 */
	@JsonUnwrapped(prefix = "couponName")
	private Condition<String> couponNameCondition;

    /** 优惠券模板ID查询条件 */
	@JsonUnwrapped(prefix = "couponTemplateId")
	private Condition<String> couponTemplateIdCondition;

    /** 优惠券随机段ID查询条件 */
	@JsonUnwrapped(prefix = "couponTemplateRandomId")
	private Condition<String> couponTemplateRandomIdCondition;

    /** 优惠金额查询条件 */
	@JsonUnwrapped(prefix = "reductionMount")
	private Condition<BigDecimal> reductionMountCondition;

    /** [枚举]优惠券类型：0-停车券-PARK、1-优惠券-COUPON查询条件 */
	@JsonUnwrapped(prefix = "type")
	private Condition<CouponType> typeCondition;

    /** 是否已使用（1：已使用、0：未使用）查询条件 */
	@JsonUnwrapped(prefix = "used")
	private Condition<Boolean> usedCondition;

    /** 使用时间查询条件 */
	@JsonUnwrapped(prefix = "useTime")
	private Condition<LocalDateTime> useTimeCondition;

    /** 使用优惠金额查询条件 */
	@JsonUnwrapped(prefix = "useReductionMount")
	private Condition<BigDecimal> useReductionMountCondition;

    /** 有效时间查询条件 */
	@JsonUnwrapped(prefix = "validTime")
	private Condition<LocalDateTime> validTimeCondition;

    /** 是否已失效（1：已失效、0：未失效）查询条件 */
	@JsonUnwrapped(prefix = "expired")
	private Condition<Boolean> expiredCondition;

    /** 失效时间（到期或标记为失效都算失效，标记为没失效并且没到期才算有效）查询条件 */
	@JsonUnwrapped(prefix = "expireTime")
	private Condition<LocalDateTime> expireTimeCondition;

    /** 创建时间查询条件 */
	@JsonUnwrapped(prefix = "createdTime")
	private Condition<LocalDateTime> createdTimeCondition;

    /** [枚举]来源平台：0-电脑-PC、1-苹果手机-IOS、2-安卓手机-ANDROID、3-微信-WECHAT、4-其它-OTHER查询条件 */
	@JsonUnwrapped(prefix = "platform")
	private Condition<CouponPlatform> platformCondition;

    /** 自定义来源（例如：2018双节活动扫码、2018双节活动红包雨、2018年货节赠送、2019元宵节赠送等等）查询条件 */
	@JsonUnwrapped(prefix = "source")
	private Condition<String> sourceCondition;

    /** [枚举]来源类型：0-商户发放-MERCHANT、1-积分兑换-POINT、2-福利赠送-WELFARE、3-领取-RECEIVE、4-聚合支付积分兑换-PAYGET查询条件 */
	@JsonUnwrapped(prefix = "sourceType")
	private Condition<CouponSourceType> sourceTypeCondition;

    /** 券包ID（优惠券来自券包时存在）查询条件 */
	@JsonUnwrapped(prefix = "couponPackageId")
	private Condition<String> couponPackageIdCondition;

    /** 券包模板ID（冗余）查询条件 */
	@JsonUnwrapped(prefix = "couponPackageTemplateId")
	private Condition<String> couponPackageTemplateIdCondition;

    /** 【兑换订单号】订单号 积分兑换时填写查询条件 */
	@JsonUnwrapped(prefix = "orderNo")
	private Condition<String> orderNoCondition;

    /** 【使用订单号】订单号 下单使用时填写查询条件 */
	@JsonUnwrapped(prefix = "useOrderNo")
	private Condition<String> useOrderNoCondition;

	/**
	 * 构造一个查询条件对象
	 */
	public CouponQuery() {
		super();
	}

	/**
	 * 依据实体对象构造一个查询条件对象
	 * 
	 * @param entity 实体对象
	 */
	public CouponQuery(CouponEntity entity) {
		super(entity);
	}

	/**
	 * 依据其它查询条件对象的信息构造一个查询条件对象
	 * 
	 * @param other 查询条件对象
	 */
	public CouponQuery(CouponQuery other) {
		super(other);
		if(other.idCondition != null) {
			this.idCondition = other.idCondition.copy();
		}
		if(other.ownerTypeCondition != null) {
			this.ownerTypeCondition = other.ownerTypeCondition.copy();
		}
		if(other.groupIdCondition != null) {
			this.groupIdCondition = other.groupIdCondition.copy();
		}
		if(other.busdIdCondition != null) {
			this.busdIdCondition = other.busdIdCondition.copy();
		}
		if(other.merchantIdCondition != null) {
			this.merchantIdCondition = other.merchantIdCondition.copy();
		}
		if(other.memberIdCondition != null) {
			this.memberIdCondition = other.memberIdCondition.copy();
		}
		if(other.couponNameCondition != null) {
			this.couponNameCondition = other.couponNameCondition.copy();
		}
		if(other.couponTemplateIdCondition != null) {
			this.couponTemplateIdCondition = other.couponTemplateIdCondition.copy();
		}
		if(other.couponTemplateRandomIdCondition != null) {
			this.couponTemplateRandomIdCondition = other.couponTemplateRandomIdCondition.copy();
		}
		if(other.reductionMountCondition != null) {
			this.reductionMountCondition = other.reductionMountCondition.copy();
		}
		if(other.typeCondition != null) {
			this.typeCondition = other.typeCondition.copy();
		}
		if(other.usedCondition != null) {
			this.usedCondition = other.usedCondition.copy();
		}
		if(other.useTimeCondition != null) {
			this.useTimeCondition = other.useTimeCondition.copy();
		}
		if(other.useReductionMountCondition != null) {
			this.useReductionMountCondition = other.useReductionMountCondition.copy();
		}
		this.setOther(other);
	}
	private void setOther(CouponQuery other){
		if(other.validTimeCondition != null) {
			this.validTimeCondition = other.validTimeCondition.copy();
		}
		if(other.expiredCondition != null) {
			this.expiredCondition = other.expiredCondition.copy();
		}
		if(other.expireTimeCondition != null) {
			this.expireTimeCondition = other.expireTimeCondition.copy();
		}
		if(other.createdTimeCondition != null) {
			this.createdTimeCondition = other.createdTimeCondition.copy();
		}
		if(other.platformCondition != null) {
			this.platformCondition = other.platformCondition.copy();
		}
		if(other.sourceCondition != null) {
			this.sourceCondition = other.sourceCondition.copy();
		}
		if(other.sourceTypeCondition != null) {
			this.sourceTypeCondition = other.sourceTypeCondition.copy();
		}
		if(other.couponPackageIdCondition != null) {
			this.couponPackageIdCondition = other.couponPackageIdCondition.copy();
		}
		if(other.couponPackageTemplateIdCondition != null) {
			this.couponPackageTemplateIdCondition = other.couponPackageTemplateIdCondition.copy();
		}
		if(other.orderNoCondition != null) {
			this.orderNoCondition = other.orderNoCondition.copy();
		}
		if(other.useOrderNoCondition != null) {
			this.useOrderNoCondition = other.useOrderNoCondition.copy();
		}
	}

	@Override
	public QueryWrapper<CouponEntity> toQueryWrapper() {
		QueryWrapper<CouponEntity> wrapper = new QueryWrapper<>(this);
		if (idCondition != null) {
			idCondition.toWrapper(wrapper, COL_ID);
		}
		if (ownerTypeCondition != null) {
			ownerTypeCondition.toWrapper(wrapper, COL_OWNER_TYPE);
		}
		if (groupIdCondition != null) {
			groupIdCondition.toWrapper(wrapper, COL_GROUP_ID);
		}
		if (busdIdCondition != null) {
			busdIdCondition.toWrapper(wrapper, COL_BUSD_ID);
		}
		if (merchantIdCondition != null) {
			merchantIdCondition.toWrapper(wrapper, COL_MERCHANT_ID);
		}
		if (memberIdCondition != null) {
			memberIdCondition.toWrapper(wrapper, COL_MEMBER_ID);
		}
		if (couponNameCondition != null) {
			couponNameCondition.toWrapper(wrapper, COL_COUPON_NAME);
		}
		if (couponTemplateIdCondition != null) {
			couponTemplateIdCondition.toWrapper(wrapper, COL_COUPON_TEMPLATE_ID);
		}
		if (couponTemplateRandomIdCondition != null) {
			couponTemplateRandomIdCondition.toWrapper(wrapper, COL_COUPON_TEMPLATE_RANDOM_ID);
		}
		if (reductionMountCondition != null) {
			reductionMountCondition.toWrapper(wrapper, COL_REDUCTION_MOUNT);
		}
		if (typeCondition != null) {
			typeCondition.toWrapper(wrapper, COL_TYPE);
		}
		if (usedCondition != null) {
			usedCondition.toWrapper(wrapper, COL_USED);
		}
		if (useTimeCondition != null) {
			useTimeCondition.toWrapper(wrapper, COL_USE_TIME);
		}
		if (useReductionMountCondition != null) {
			useReductionMountCondition.toWrapper(wrapper, COL_USE_REDUCTION_MOUNT);
		}
		return getQueryWrapper(wrapper);
	}
	private QueryWrapper<CouponEntity> getQueryWrapper(QueryWrapper<CouponEntity> wrapper){
		if (validTimeCondition != null) {
			validTimeCondition.toWrapper(wrapper, COL_VALID_TIME);
		}
		if (expiredCondition != null) {
			expiredCondition.toWrapper(wrapper, COL_EXPIRED);
		}
		if (expireTimeCondition != null) {
			expireTimeCondition.toWrapper(wrapper, COL_EXPIRE_TIME);
		}
		if (createdTimeCondition != null) {
			createdTimeCondition.toWrapper(wrapper, COL_CREATED_TIME);
		}
		if (platformCondition != null) {
			platformCondition.toWrapper(wrapper, COL_PLATFORM);
		}
		if (sourceCondition != null) {
			sourceCondition.toWrapper(wrapper, COL_SOURCE);
		}
		if (sourceTypeCondition != null) {
			sourceTypeCondition.toWrapper(wrapper, COL_SOURCE_TYPE);
		}
		if (couponPackageIdCondition != null) {
			couponPackageIdCondition.toWrapper(wrapper, COL_COUPON_PACKAGE_ID);
		}
		if (couponPackageTemplateIdCondition != null) {
			couponPackageTemplateIdCondition.toWrapper(wrapper, COL_COUPON_PACKAGE_TEMPLATE_ID);
		}
		if (orderNoCondition != null) {
			orderNoCondition.toWrapper(wrapper, COL_ORDER_NO);
		}
		if (useOrderNoCondition != null) {
			useOrderNoCondition.toWrapper(wrapper, COL_USE_ORDER_NO);
		}
		return wrapper;
	}

	/**
	 * 构造并返回优惠券ID查询条件
	 * 
	 * @return idCondition 优惠券ID查询条件
	 */
	public Condition<String> id() {
		this.idCondition = new Condition<>();
		return this.idCondition;
	}
	
	/**
	 * 获取优惠券ID查询条件
	 * 
	 * @return idCondition 优惠券ID查询条件
	 */
	public Condition<String> getIdCondition() {
		return idCondition;
	}

	/**
	 * 设置优惠券ID查询条件
	 * 
	 * @param idCondition 优惠券ID查询条件
	 */
	public void setIdCondition(Condition<String> idCondition) {
		this.idCondition = idCondition;
	}

	/**
	 * 构造并返回[全局枚举]所有者类型(把优惠券交给会员之前的所有者)：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSINESS_DISTRICT、3-商户-MERCHANT查询条件
	 * 
	 * @return ownerTypeCondition [全局枚举]所有者类型(把优惠券交给会员之前的所有者)：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSINESS_DISTRICT、3-商户-MERCHANT查询条件
	 */
	public Condition<OwnerType> ownerType() {
		this.ownerTypeCondition = new Condition<>();
		return this.ownerTypeCondition;
	}
	
	/**
	 * 获取[全局枚举]所有者类型(把优惠券交给会员之前的所有者)：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSINESS_DISTRICT、3-商户-MERCHANT查询条件
	 * 
	 * @return ownerTypeCondition [全局枚举]所有者类型(把优惠券交给会员之前的所有者)：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSINESS_DISTRICT、3-商户-MERCHANT查询条件
	 */
	public Condition<OwnerType> getOwnerTypeCondition() {
		return ownerTypeCondition;
	}

	/**
	 * 设置[全局枚举]所有者类型(把优惠券交给会员之前的所有者)：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSINESS_DISTRICT、3-商户-MERCHANT查询条件
	 * 
	 * @param ownerTypeCondition [全局枚举]所有者类型(把优惠券交给会员之前的所有者)：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSINESS_DISTRICT、3-商户-MERCHANT查询条件
	 */
	public void setOwnerTypeCondition(Condition<OwnerType> ownerTypeCondition) {
		this.ownerTypeCondition = ownerTypeCondition;
	}

	/**
	 * 构造并返回集团ID查询条件
	 * 
	 * @return groupIdCondition 集团ID查询条件
	 */
	public Condition<String> groupId() {
		this.groupIdCondition = new Condition<>();
		return this.groupIdCondition;
	}
	
	/**
	 * 获取集团ID查询条件
	 * 
	 * @return groupIdCondition 集团ID查询条件
	 */
	public Condition<String> getGroupIdCondition() {
		return groupIdCondition;
	}

	/**
	 * 设置集团ID查询条件
	 * 
	 * @param groupIdCondition 集团ID查询条件
	 */
	public void setGroupIdCondition(Condition<String> groupIdCondition) {
		this.groupIdCondition = groupIdCondition;
	}

	/**
	 * 构造并返回商圈ID查询条件
	 * 
	 * @return busdIdCondition 商圈ID查询条件
	 */
	public Condition<String> busdId() {
		this.busdIdCondition = new Condition<>();
		return this.busdIdCondition;
	}
	
	/**
	 * 获取商圈ID查询条件
	 * 
	 * @return busdIdCondition 商圈ID查询条件
	 */
	public Condition<String> getBusdIdCondition() {
		return busdIdCondition;
	}

	/**
	 * 设置商圈ID查询条件
	 * 
	 * @param busdIdCondition 商圈ID查询条件
	 */
	public void setBusdIdCondition(Condition<String> busdIdCondition) {
		this.busdIdCondition = busdIdCondition;
	}

	/**
	 * 构造并返回商户ID查询条件
	 * 
	 * @return merchantIdCondition 商户ID查询条件
	 */
	public Condition<String> merchantId() {
		this.merchantIdCondition = new Condition<>();
		return this.merchantIdCondition;
	}
	
	/**
	 * 获取商户ID查询条件
	 * 
	 * @return merchantIdCondition 商户ID查询条件
	 */
	public Condition<String> getMerchantIdCondition() {
		return merchantIdCondition;
	}

	/**
	 * 设置商户ID查询条件
	 * 
	 * @param merchantIdCondition 商户ID查询条件
	 */
	public void setMerchantIdCondition(Condition<String> merchantIdCondition) {
		this.merchantIdCondition = merchantIdCondition;
	}

	/**
	 * 构造并返回会员ID查询条件
	 * 
	 * @return memberIdCondition 会员ID查询条件
	 */
	public Condition<String> memberId() {
		this.memberIdCondition = new Condition<>();
		return this.memberIdCondition;
	}
	
	/**
	 * 获取会员ID查询条件
	 * 
	 * @return memberIdCondition 会员ID查询条件
	 */
	public Condition<String> getMemberIdCondition() {
		return memberIdCondition;
	}

	/**
	 * 设置会员ID查询条件
	 * 
	 * @param memberIdCondition 会员ID查询条件
	 */
	public void setMemberIdCondition(Condition<String> memberIdCondition) {
		this.memberIdCondition = memberIdCondition;
	}

	/**
	 * 构造并返回优惠券名称查询条件
	 * 
	 * @return couponNameCondition 优惠券名称查询条件
	 */
	public Condition<String> couponName() {
		this.couponNameCondition = new Condition<>();
		return this.couponNameCondition;
	}
	
	/**
	 * 获取优惠券名称查询条件
	 * 
	 * @return couponNameCondition 优惠券名称查询条件
	 */
	public Condition<String> getCouponNameCondition() {
		return couponNameCondition;
	}

	/**
	 * 设置优惠券名称查询条件
	 * 
	 * @param couponNameCondition 优惠券名称查询条件
	 */
	public void setCouponNameCondition(Condition<String> couponNameCondition) {
		this.couponNameCondition = couponNameCondition;
	}

	/**
	 * 构造并返回优惠券模板ID查询条件
	 * 
	 * @return couponTemplateIdCondition 优惠券模板ID查询条件
	 */
	public Condition<String> couponTemplateId() {
		this.couponTemplateIdCondition = new Condition<>();
		return this.couponTemplateIdCondition;
	}
	
	/**
	 * 获取优惠券模板ID查询条件
	 * 
	 * @return couponTemplateIdCondition 优惠券模板ID查询条件
	 */
	public Condition<String> getCouponTemplateIdCondition() {
		return couponTemplateIdCondition;
	}

	/**
	 * 设置优惠券模板ID查询条件
	 * 
	 * @param couponTemplateIdCondition 优惠券模板ID查询条件
	 */
	public void setCouponTemplateIdCondition(Condition<String> couponTemplateIdCondition) {
		this.couponTemplateIdCondition = couponTemplateIdCondition;
	}

	/**
	 * 构造并返回优惠券随机段ID查询条件
	 * 
	 * @return couponTemplateRandomIdCondition 优惠券随机段ID查询条件
	 */
	public Condition<String> couponTemplateRandomId() {
		this.couponTemplateRandomIdCondition = new Condition<>();
		return this.couponTemplateRandomIdCondition;
	}
	
	/**
	 * 获取优惠券随机段ID查询条件
	 * 
	 * @return couponTemplateRandomIdCondition 优惠券随机段ID查询条件
	 */
	public Condition<String> getCouponTemplateRandomIdCondition() {
		return couponTemplateRandomIdCondition;
	}

	/**
	 * 设置优惠券随机段ID查询条件
	 * 
	 * @param couponTemplateRandomIdCondition 优惠券随机段ID查询条件
	 */
	public void setCouponTemplateRandomIdCondition(Condition<String> couponTemplateRandomIdCondition) {
		this.couponTemplateRandomIdCondition = couponTemplateRandomIdCondition;
	}

	/**
	 * 构造并返回优惠金额查询条件
	 * 
	 * @return reductionMountCondition 优惠金额查询条件
	 */
	public Condition<BigDecimal> reductionMount() {
		this.reductionMountCondition = new Condition<>();
		return this.reductionMountCondition;
	}
	
	/**
	 * 获取优惠金额查询条件
	 * 
	 * @return reductionMountCondition 优惠金额查询条件
	 */
	public Condition<BigDecimal> getReductionMountCondition() {
		return reductionMountCondition;
	}

	/**
	 * 设置优惠金额查询条件
	 * 
	 * @param reductionMountCondition 优惠金额查询条件
	 */
	public void setReductionMountCondition(Condition<BigDecimal> reductionMountCondition) {
		this.reductionMountCondition = reductionMountCondition;
	}

	/**
	 * 构造并返回[枚举]优惠券类型：0-停车券-PARK、1-优惠券-COUPON查询条件
	 * 
	 * @return typeCondition [枚举]优惠券类型：0-停车券-PARK、1-优惠券-COUPON查询条件
	 */
	public Condition<CouponType> type() {
		this.typeCondition = new Condition<>();
		return this.typeCondition;
	}
	
	/**
	 * 获取[枚举]优惠券类型：0-停车券-PARK、1-优惠券-COUPON查询条件
	 * 
	 * @return typeCondition [枚举]优惠券类型：0-停车券-PARK、1-优惠券-COUPON查询条件
	 */
	public Condition<CouponType> getTypeCondition() {
		return typeCondition;
	}

	/**
	 * 设置[枚举]优惠券类型：0-停车券-PARK、1-优惠券-COUPON查询条件
	 * 
	 * @param typeCondition [枚举]优惠券类型：0-停车券-PARK、1-优惠券-COUPON查询条件
	 */
	public void setTypeCondition(Condition<CouponType> typeCondition) {
		this.typeCondition = typeCondition;
	}

	/**
	 * 构造并返回是否已使用（1：已使用、0：未使用）查询条件
	 * 
	 * @return usedCondition 是否已使用（1：已使用、0：未使用）查询条件
	 */
	public Condition<Boolean> used() {
		this.usedCondition = new Condition<>();
		return this.usedCondition;
	}
	
	/**
	 * 获取是否已使用（1：已使用、0：未使用）查询条件
	 * 
	 * @return usedCondition 是否已使用（1：已使用、0：未使用）查询条件
	 */
	public Condition<Boolean> getUsedCondition() {
		return usedCondition;
	}

	/**
	 * 设置是否已使用（1：已使用、0：未使用）查询条件
	 * 
	 * @param usedCondition 是否已使用（1：已使用、0：未使用）查询条件
	 */
	public void setUsedCondition(Condition<Boolean> usedCondition) {
		this.usedCondition = usedCondition;
	}

	/**
	 * 构造并返回使用时间查询条件
	 * 
	 * @return useTimeCondition 使用时间查询条件
	 */
	public Condition<LocalDateTime> useTime() {
		this.useTimeCondition = new Condition<>();
		return this.useTimeCondition;
	}
	
	/**
	 * 获取使用时间查询条件
	 * 
	 * @return useTimeCondition 使用时间查询条件
	 */
	public Condition<LocalDateTime> getUseTimeCondition() {
		return useTimeCondition;
	}

	/**
	 * 设置使用时间查询条件
	 * 
	 * @param useTimeCondition 使用时间查询条件
	 */
	public void setUseTimeCondition(Condition<LocalDateTime> useTimeCondition) {
		this.useTimeCondition = useTimeCondition;
	}

	/**
	 * 构造并返回使用优惠金额查询条件
	 * 
	 * @return useReductionMountCondition 使用优惠金额查询条件
	 */
	public Condition<BigDecimal> useReductionMount() {
		this.useReductionMountCondition = new Condition<>();
		return this.useReductionMountCondition;
	}
	
	/**
	 * 获取使用优惠金额查询条件
	 * 
	 * @return useReductionMountCondition 使用优惠金额查询条件
	 */
	public Condition<BigDecimal> getUseReductionMountCondition() {
		return useReductionMountCondition;
	}

	/**
	 * 设置使用优惠金额查询条件
	 * 
	 * @param useReductionMountCondition 使用优惠金额查询条件
	 */
	public void setUseReductionMountCondition(Condition<BigDecimal> useReductionMountCondition) {
		this.useReductionMountCondition = useReductionMountCondition;
	}

	/**
	 * 构造并返回有效时间查询条件
	 * 
	 * @return validTimeCondition 有效时间查询条件
	 */
	public Condition<LocalDateTime> validTime() {
		this.validTimeCondition = new Condition<>();
		return this.validTimeCondition;
	}
	
	/**
	 * 获取有效时间查询条件
	 * 
	 * @return validTimeCondition 有效时间查询条件
	 */
	public Condition<LocalDateTime> getValidTimeCondition() {
		return validTimeCondition;
	}

	/**
	 * 设置有效时间查询条件
	 * 
	 * @param validTimeCondition 有效时间查询条件
	 */
	public void setValidTimeCondition(Condition<LocalDateTime> validTimeCondition) {
		this.validTimeCondition = validTimeCondition;
	}

	/**
	 * 构造并返回是否已失效（1：已失效、0：未失效）查询条件
	 * 
	 * @return expiredCondition 是否已失效（1：已失效、0：未失效）查询条件
	 */
	public Condition<Boolean> expired() {
		this.expiredCondition = new Condition<>();
		return this.expiredCondition;
	}
	
	/**
	 * 获取是否已失效（1：已失效、0：未失效）查询条件
	 * 
	 * @return expiredCondition 是否已失效（1：已失效、0：未失效）查询条件
	 */
	public Condition<Boolean> getExpiredCondition() {
		return expiredCondition;
	}

	/**
	 * 设置是否已失效（1：已失效、0：未失效）查询条件
	 * 
	 * @param expiredCondition 是否已失效（1：已失效、0：未失效）查询条件
	 */
	public void setExpiredCondition(Condition<Boolean> expiredCondition) {
		this.expiredCondition = expiredCondition;
	}

	/**
	 * 构造并返回失效时间（到期或标记为失效都算失效，标记为没失效并且没到期才算有效）查询条件
	 * 
	 * @return expireTimeCondition 失效时间（到期或标记为失效都算失效，标记为没失效并且没到期才算有效）查询条件
	 */
	public Condition<LocalDateTime> expireTime() {
		this.expireTimeCondition = new Condition<>();
		return this.expireTimeCondition;
	}
	
	/**
	 * 获取失效时间（到期或标记为失效都算失效，标记为没失效并且没到期才算有效）查询条件
	 * 
	 * @return expireTimeCondition 失效时间（到期或标记为失效都算失效，标记为没失效并且没到期才算有效）查询条件
	 */
	public Condition<LocalDateTime> getExpireTimeCondition() {
		return expireTimeCondition;
	}

	/**
	 * 设置失效时间（到期或标记为失效都算失效，标记为没失效并且没到期才算有效）查询条件
	 * 
	 * @param expireTimeCondition 失效时间（到期或标记为失效都算失效，标记为没失效并且没到期才算有效）查询条件
	 */
	public void setExpireTimeCondition(Condition<LocalDateTime> expireTimeCondition) {
		this.expireTimeCondition = expireTimeCondition;
	}

	/**
	 * 构造并返回创建时间查询条件
	 * 
	 * @return createdTimeCondition 创建时间查询条件
	 */
	public Condition<LocalDateTime> createdTime() {
		this.createdTimeCondition = new Condition<>();
		return this.createdTimeCondition;
	}
	
	/**
	 * 获取创建时间查询条件
	 * 
	 * @return createdTimeCondition 创建时间查询条件
	 */
	public Condition<LocalDateTime> getCreatedTimeCondition() {
		return createdTimeCondition;
	}

	/**
	 * 设置创建时间查询条件
	 * 
	 * @param createdTimeCondition 创建时间查询条件
	 */
	public void setCreatedTimeCondition(Condition<LocalDateTime> createdTimeCondition) {
		this.createdTimeCondition = createdTimeCondition;
	}

	/**
	 * 构造并返回[枚举]来源平台：0-电脑-PC、1-苹果手机-IOS、2-安卓手机-ANDROID、3-微信-WECHAT、4-其它-OTHER查询条件
	 * 
	 * @return platformCondition [枚举]来源平台：0-电脑-PC、1-苹果手机-IOS、2-安卓手机-ANDROID、3-微信-WECHAT、4-其它-OTHER查询条件
	 */
	public Condition<CouponPlatform> platform() {
		this.platformCondition = new Condition<>();
		return this.platformCondition;
	}
	
	/**
	 * 获取[枚举]来源平台：0-电脑-PC、1-苹果手机-IOS、2-安卓手机-ANDROID、3-微信-WECHAT、4-其它-OTHER查询条件
	 * 
	 * @return platformCondition [枚举]来源平台：0-电脑-PC、1-苹果手机-IOS、2-安卓手机-ANDROID、3-微信-WECHAT、4-其它-OTHER查询条件
	 */
	public Condition<CouponPlatform> getPlatformCondition() {
		return platformCondition;
	}

	/**
	 * 设置[枚举]来源平台：0-电脑-PC、1-苹果手机-IOS、2-安卓手机-ANDROID、3-微信-WECHAT、4-其它-OTHER查询条件
	 * 
	 * @param platformCondition [枚举]来源平台：0-电脑-PC、1-苹果手机-IOS、2-安卓手机-ANDROID、3-微信-WECHAT、4-其它-OTHER查询条件
	 */
	public void setPlatformCondition(Condition<CouponPlatform> platformCondition) {
		this.platformCondition = platformCondition;
	}

	/**
	 * 构造并返回自定义来源（例如：2018双节活动扫码、2018双节活动红包雨、2018年货节赠送、2019元宵节赠送等等）查询条件
	 * 
	 * @return sourceCondition 自定义来源（例如：2018双节活动扫码、2018双节活动红包雨、2018年货节赠送、2019元宵节赠送等等）查询条件
	 */
	public Condition<String> source() {
		this.sourceCondition = new Condition<>();
		return this.sourceCondition;
	}
	
	/**
	 * 获取自定义来源（例如：2018双节活动扫码、2018双节活动红包雨、2018年货节赠送、2019元宵节赠送等等）查询条件
	 * 
	 * @return sourceCondition 自定义来源（例如：2018双节活动扫码、2018双节活动红包雨、2018年货节赠送、2019元宵节赠送等等）查询条件
	 */
	public Condition<String> getSourceCondition() {
		return sourceCondition;
	}

	/**
	 * 设置自定义来源（例如：2018双节活动扫码、2018双节活动红包雨、2018年货节赠送、2019元宵节赠送等等）查询条件
	 * 
	 * @param sourceCondition 自定义来源（例如：2018双节活动扫码、2018双节活动红包雨、2018年货节赠送、2019元宵节赠送等等）查询条件
	 */
	public void setSourceCondition(Condition<String> sourceCondition) {
		this.sourceCondition = sourceCondition;
	}

	/**
	 * 构造并返回[枚举]来源类型：0-商户发放-MERCHANT、1-积分兑换-POINT、2-福利赠送-WELFARE、3-领取-RECEIVE、4-聚合支付积分兑换-PAYGET查询条件
	 * 
	 * @return sourceTypeCondition [枚举]来源类型：0-商户发放-MERCHANT、1-积分兑换-POINT、2-福利赠送-WELFARE、3-领取-RECEIVE、4-聚合支付积分兑换-PAYGET查询条件
	 */
	public Condition<CouponSourceType> sourceType() {
		this.sourceTypeCondition = new Condition<>();
		return this.sourceTypeCondition;
	}
	
	/**
	 * 获取[枚举]来源类型：0-商户发放-MERCHANT、1-积分兑换-POINT、2-福利赠送-WELFARE、3-领取-RECEIVE、4-聚合支付积分兑换-PAYGET查询条件
	 * 
	 * @return sourceTypeCondition [枚举]来源类型：0-商户发放-MERCHANT、1-积分兑换-POINT、2-福利赠送-WELFARE、3-领取-RECEIVE、4-聚合支付积分兑换-PAYGET查询条件
	 */
	public Condition<CouponSourceType> getSourceTypeCondition() {
		return sourceTypeCondition;
	}

	/**
	 * 设置[枚举]来源类型：0-商户发放-MERCHANT、1-积分兑换-POINT、2-福利赠送-WELFARE、3-领取-RECEIVE、4-聚合支付积分兑换-PAYGET查询条件
	 * 
	 * @param sourceTypeCondition [枚举]来源类型：0-商户发放-MERCHANT、1-积分兑换-POINT、2-福利赠送-WELFARE、3-领取-RECEIVE、4-聚合支付积分兑换-PAYGET查询条件
	 */
	public void setSourceTypeCondition(Condition<CouponSourceType> sourceTypeCondition) {
		this.sourceTypeCondition = sourceTypeCondition;
	}

	/**
	 * 构造并返回券包ID（优惠券来自券包时存在）查询条件
	 * 
	 * @return couponPackageIdCondition 券包ID（优惠券来自券包时存在）查询条件
	 */
	public Condition<String> couponPackageId() {
		this.couponPackageIdCondition = new Condition<>();
		return this.couponPackageIdCondition;
	}
	
	/**
	 * 获取券包ID（优惠券来自券包时存在）查询条件
	 * 
	 * @return couponPackageIdCondition 券包ID（优惠券来自券包时存在）查询条件
	 */
	public Condition<String> getCouponPackageIdCondition() {
		return couponPackageIdCondition;
	}

	/**
	 * 设置券包ID（优惠券来自券包时存在）查询条件
	 * 
	 * @param couponPackageIdCondition 券包ID（优惠券来自券包时存在）查询条件
	 */
	public void setCouponPackageIdCondition(Condition<String> couponPackageIdCondition) {
		this.couponPackageIdCondition = couponPackageIdCondition;
	}

	/**
	 * 构造并返回券包模板ID（冗余）查询条件
	 * 
	 * @return couponPackageTemplateIdCondition 券包模板ID（冗余）查询条件
	 */
	public Condition<String> couponPackageTemplateId() {
		this.couponPackageTemplateIdCondition = new Condition<>();
		return this.couponPackageTemplateIdCondition;
	}
	
	/**
	 * 获取券包模板ID（冗余）查询条件
	 * 
	 * @return couponPackageTemplateIdCondition 券包模板ID（冗余）查询条件
	 */
	public Condition<String> getCouponPackageTemplateIdCondition() {
		return couponPackageTemplateIdCondition;
	}

	/**
	 * 设置券包模板ID（冗余）查询条件
	 * 
	 * @param couponPackageTemplateIdCondition 券包模板ID（冗余）查询条件
	 */
	public void setCouponPackageTemplateIdCondition(Condition<String> couponPackageTemplateIdCondition) {
		this.couponPackageTemplateIdCondition = couponPackageTemplateIdCondition;
	}

	/**
	 * 构造并返回【兑换订单号】订单号 积分兑换时填写查询条件
	 * 
	 * @return orderNoCondition 【兑换订单号】订单号 积分兑换时填写查询条件
	 */
	public Condition<String> orderNo() {
		this.orderNoCondition = new Condition<>();
		return this.orderNoCondition;
	}
	
	/**
	 * 获取【兑换订单号】订单号 积分兑换时填写查询条件
	 * 
	 * @return orderNoCondition 【兑换订单号】订单号 积分兑换时填写查询条件
	 */
	public Condition<String> getOrderNoCondition() {
		return orderNoCondition;
	}

	/**
	 * 设置【兑换订单号】订单号 积分兑换时填写查询条件
	 * 
	 * @param orderNoCondition 【兑换订单号】订单号 积分兑换时填写查询条件
	 */
	public void setOrderNoCondition(Condition<String> orderNoCondition) {
		this.orderNoCondition = orderNoCondition;
	}

	/**
	 * 构造并返回【使用订单号】订单号 下单使用时填写查询条件
	 * 
	 * @return useOrderNoCondition 【使用订单号】订单号 下单使用时填写查询条件
	 */
	public Condition<String> useOrderNo() {
		this.useOrderNoCondition = new Condition<>();
		return this.useOrderNoCondition;
	}
	
	/**
	 * 获取【使用订单号】订单号 下单使用时填写查询条件
	 * 
	 * @return useOrderNoCondition 【使用订单号】订单号 下单使用时填写查询条件
	 */
	public Condition<String> getUseOrderNoCondition() {
		return useOrderNoCondition;
	}

	/**
	 * 设置【使用订单号】订单号 下单使用时填写查询条件
	 * 
	 * @param useOrderNoCondition 【使用订单号】订单号 下单使用时填写查询条件
	 */
	public void setUseOrderNoCondition(Condition<String> useOrderNoCondition) {
		this.useOrderNoCondition = useOrderNoCondition;
	}

}
